package demo01;

import java.io.FileNotFoundException;
import java.io.IOException;

/*
 *  异常的注意事项1：
 *  多个异常，如何使用try..catch处理，有三种方式：
 *      1. 多个异常分别处理
 *      2. 多个异常一次捕获，多次处理
 *      3. 多个异常一次捕获，一次处理
 */
public class Demo08Attetion1 {
    public static void main(String[] args) {
        /*
         *  多个异常分别处理：使用多个try...catch语句
         */
        try {
            throw new FileNotFoundException();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        try {
            throw new IOException();
        } catch (IOException e) {
            e.printStackTrace();
        }

        /*
         *  多个异常一次捕获，多次处理：使用一个try语句，多个catch语句
         *  注意：如果多个异常之间有子父类关系，子类异常必须在父类异常之前被捕获，否则子类异常将捕获不到，引发报错
         */
        try { // try代码块可能产生多个异常，对每种异常分别进行catch捕获
            if (true) {
                throw new FileNotFoundException();
            } else {
                throw new IOException();
            }
        } catch (FileNotFoundException e) { // 注意：FileNotFoundException必须在IOException之前捕获
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        /*
         *  多个异常一次捕获，一次处理：使用一个try...catch语句
         *  注意：此写法就是上一种写法省去捕获子类异常的效果，子类异常可以由父类异常名接收，是一种多态性的体现
         */
        try { // try代码块可能产生多个异常，对每种异常分别进行catch捕获
            if (true) {
                throw new FileNotFoundException();
            } else {
                throw new IOException();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
